using FrameworkDesign;

public interface ICommand : IBelongToArchitecture, ICanSetArchitecture, ICanGetSystem,ICanGetUtility,ICanGetModel,ICanSendCommand,ICanSendEvent,ICanSendQuery
{
    void Execute();
}
public abstract class AbstractCommand : ICommand
{
    private IArchitecture mArchitecture;
    void ICommand.Execute()
    {
        OnExecute();
    }
    protected abstract void OnExecute();

    IArchitecture IBelongToArchitecture.GetArchitecture()
    {
        return mArchitecture;
    }

    void ICanSetArchitecture.SetArchitecture(IArchitecture architecture)
    {
        mArchitecture = architecture;
    }
}
